package com.aispeech.testcustom.bean;

import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;

import java.util.ArrayList;
import java.util.List;

/**
 * 自定义命令实体
 */
public class Command {
    /**
     * 命令串，url格式
     **/
    @NonNull
    private String        command;
    /**
     * 关键词，可多个
     * private String[] keywords;将默认的string数组修改为List,value值用来保存测试结果是否通过
     **/
    @NonNull
    private List<CmdItem> keywords;

    /**
     * 创建一个自定义命令
     *
     * @param command  命令串 ，url格式。不支持中文、标点和特殊符号
     * @param keywords 关键词
     */
    public Command(@NonNull String command, @NonNull List<CmdItem> keywords) {
        this.command = command;
        this.keywords = keywords;
    }

    public Command() {
    }

    /**
     * 获得命令串
     */
    @NonNull
    public String getCommand() {
        return command;
    }

    /**
     * 设置命令串
     *
     * @param command 命令串
     */
    public void setCommand(@NonNull String command) {
        this.command = command;
    }

    /**
     * 获取关键词
     */
    @NonNull
    public List<CmdItem> getKeywords() {
        return keywords;
    }

    /**
     * 设置关键词
     *
     * @param
     */
    public void setKeywords(@NonNull String[] words) {
        if (null == this.keywords) {
            this.keywords = new ArrayList<>();
        }
        //String 数组转list
        for (int i = 0; i < words.length; i++) {
            Log.d("test", "setKeywords: ____" + i + "  __" + words[i]);
            if (!TextUtils.isEmpty(words[i])){
                CmdItem ci = new CmdItem();
                ci.setCmd(words[i]);
                ci.setCheckResult(true);//默认都通过 , 便于后面listview显示
                this.keywords.add(ci);
            }
        }
    }

    @Override
    public String toString() {
        return "Command{" +
                "command='" + command + '\'' +
                ", keywords= " + keywords.toString();
    }

    /**
     * 将命令转换成JSON串
     *
     * @param
     * @return json串
     */
    //    public JSONObject toJSONObject(String prefix) {
    //        JSONObject commands = new JSONObject();
    //        try {
    //            for (String keyword : keywords) {
    //                commands.put(keyword, prefix+command);
    //            }
    //        } catch (JSONException e) {
    //            e.printStackTrace();
    //        }
    //        return commands;
    //    }
    public class CmdItem {
        private String  cmd;
        private boolean checkResult;

        public String getCmd() {
            return cmd;
        }

        public void setCmd(String cmd) {
            this.cmd = cmd;
        }

        public boolean isCheckResult() {
            return checkResult;
        }

        public void setCheckResult(boolean checkResult) {
            this.checkResult = checkResult;
        }
    }

}
